import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class ResumoDeputados {

	private List<Deputados> deputado = new ArrayList<Deputados>();

	public void load(String path) throws FileNotFoundException, IOException {

		File file = new File(path);
		if (file.exists()){
			FileReader fileReader = new FileReader(file);
			BufferedReader reader = new BufferedReader(fileReader);
			String linha = reader.readLine();
			while ((linha = reader.readLine()) !=null){
				String[] linhaList = linha.split("\\,");
				int tam = linhaList[0].length();
				String nome = linhaList[0].substring(1, tam-1);
				tam = linhaList[1].length();
				String estado = linhaList[1].substring(1, tam-1);
				tam = linhaList[2].length();
				String regiao = linhaList[2].substring(1, tam-1);
				tam = linhaList[3].length();
				String partido = linhaList[3].substring(1, tam-1);
				tam = linhaList[4].length();
				String posicao = linhaList[4].substring(1, tam-1);
				tam = linhaList[5].length();
				String gastos = linhaList[5];
				tam = linhaList[6].length();
				String presencas = linhaList[6];
				Deputados d = new Deputados(nome, estado, regiao, partido, posicao, gastos, presencas);
				deputado.add(d);
			}
			reader.close();
		}
		
	}
	
	public void deputadosPorPartido(String partido) throws FileNotFoundException, IOException{
		System.out.println("Deputados do " + partido + "\n");
		for (Deputados d : deputado){
			if (d.getPartido().contains(partido)){
				System.out.println(d.getNome() + " " + d.getPartido());
			}
		}
	}
	
	public String deputadoMaisGastou() throws FileNotFoundException, IOException{
		String nome = null; 
		double i = 0;
		for (Deputados d : deputado){
			double gasto = Double.parseDouble(d.getGastos());
			if (gasto>i){
				nome = d.getNome();
				i = gasto;
			}
		}
		return nome;
	}
	
	public double gastosDaRegiao(String regiao){
		double soma = 0.0;
		for (Deputados d : deputado){
			if (d.getRegiao().equals(regiao)){
				soma += Double.parseDouble (d.getGastos());
			}
		}
		return soma;
	}
	
	public String regiaoMaisGastou(){
		String regiao = "Norte";
		String maiorGasto = null;
		double temp = 0.0;
		double regiaoMaiorGasto = 0.0;
		temp = gastosDaRegiao(regiao);
		if (temp > regiaoMaiorGasto){
			regiaoMaiorGasto = temp;
			maiorGasto = regiao;
		}
		regiao = "Nordeste";
		temp = gastosDaRegiao(regiao);
		if (temp > regiaoMaiorGasto){
			regiaoMaiorGasto = temp;
			maiorGasto = regiao;
		}
		regiao = "Sul";
		temp = gastosDaRegiao(regiao);
		if (temp > regiaoMaiorGasto){
			regiaoMaiorGasto = temp;
			maiorGasto = regiao;
		}
		regiao = "Sudeste";
		temp = gastosDaRegiao(regiao);
		maiorGasto = regiao;
		if (temp > regiaoMaiorGasto){
			regiaoMaiorGasto = temp;
			maiorGasto = regiao;
		}
		regiao = "Centro-oeste";
		temp = gastosDaRegiao(regiao);
		if (temp > regiaoMaiorGasto){
			regiaoMaiorGasto = temp;
			maiorGasto = regiao;
		}
		return maiorGasto;
	}
	
	public ArrayList<String> maisfrequentes(){
		ArrayList<String> maisFrequentes = new ArrayList<String>();
		for (Deputados d : deputado){
			if (Integer.parseInt(d.getPresencas()) > 100) {
				maisFrequentes.add(d.getNome());
			}
		}
		return maisFrequentes;
	}
	
	public ArrayList<Integer> presencaDeputados(){
		ArrayList<Integer> listaFreq = new ArrayList<Integer>();
		
		for (Deputados d : deputado){
			int pres = Integer.parseInt(d.getPresencas());
			listaFreq.add(pres);
		}
		Collections.sort(listaFreq);
		return listaFreq;
	}
	
	public ArrayList<Double> gastosDeputados(){
		ArrayList<Double> listaGastos = new ArrayList<Double>();
		for (Deputados d : deputado){
			double gastos = Double.parseDouble(d.getGastos());
			listaGastos.add(gastos);
		}
		Collections.sort(listaGastos);
		return listaGastos;
	}
}
	
	
	
	